package com.deercrowing.takeaway.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.deercrowing.takeaway.entity.DishesEntity;
import com.deercrowing.takeaway.vo.DishesPageVO;
import com.deercrowing.takeaway.vo.DishesVO;

import java.util.List;

/**
 * 菜品表(Dishes)表服务接口
 *
 * @author guoyongxiang
 * @since 2024-07-11 10:50:59
 */
public interface DishesService extends IService<DishesEntity> {

    /**
     * 对比是否在菜品中相同分类的名称
     *
     * @param dishesVO
     */
    void compareByContext(DishesVO dishesVO, Integer isAddOrUpdate/* 1新增、2更改 */);

    /**
     * 菜品管理状态变更
     *
     * @param status
     * @param id
     */
    void dishStatusUpdate(Short status, Integer id);

    /**
     * 按条件搜索信息
     *
     * @param dishesPageVO
     * @return
     */
    IPage<DishesVO> searchByCondition(DishesPageVO dishesPageVO);

    /**
     * VO视图与Entity数据转换
     *
     * @param category_id
     * @return VO视图
     */
    List<DishesVO> selectDishWithFlavor(Short category_id);

    /**
     * 获取新增菜品ID
     *
     * @param name
     * @return
     */
    Integer getDishId(String name);

    /**
     * 删除菜品以及菜品口味信息
     *
     * @param idList
     */
    void deleteDishWithFlavor(List<Integer> idList);

    /**
     * 根据ID查询菜品
     *
     * @param id
     * @return DishesVO
     */
    DishesVO searchById(Long id);

    /**
     * 更新数据至数据库
     *
     * @param id
     * @param dishesVO
     */
    void updateInfoToDB(Long id, DishesVO dishesVO);

    /**
     * 新增数据
     *
     * @param dishesVO
     */
    void insertInfoToDB(DishesVO dishesVO);
}

